var TABFLUXADRESSE = new Array();
var TABFLUXDESCRIPTION = new Array();
var TABSITE = new Array();

// mise � zero du champ lors du click
function mettre_a_zero(e){
	
	var champ = e.target.value;
	var id = e.target.id;
	
	if(champ == "Nom du site ...")
	{
		// Remise � zero du champ
		document.getElementById(id).setAttribute("value", "");
	}
	
	if(champ == "Adresse ...")
	{
		// Remise à zero du champ
		document.getElementById(id).setAttribute("value", "");
	}
}


function traiterliste(e)
{
	var requete = createXmlHttpRequestObject();
	var site = e.target.value;
	url = "feedparser.php";
	requete.open("POST", url, true);
	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requete.onreadystatechange = function(){afficherTableau(requete, site)};
	var data = "site="+site;
	requete.send(data);
}

// affichage du tableau de flux en fonction du site selectionn�
function afficherTableau(requete, site)
{
	if (requete.readyState==4 && (requete.status == 200 || requete.status == 0)) {
		document.body.style.cursor='default';
		var tab = JSON.parse(requete.responseText);
		var tabnode = construireTab(tab, site);
		
		var nodeTab = document.getElementById("tab-RSS");
		
		// On supprimer le tableau si il y est
		for (var m=0; m<nodeTab.childNodes.length; m++)
		{
			nodeTab.removeChild(nodeTab.childNodes.item(m));
		}
		nodeTab.appendChild(tabnode);
		
	}
	else
	{
		if (requete.readyState < 4) 
		{
			document.body.style.cursor='wait';
		}
	}
}

// fonction qui construit le tableau avec une chaine pass� en param ainsi que le titre
function construireTab(tableau, titreTableau)
{
	var tab = document.createElement("table");
	var caption = document.createElement("caption");
	var titreTab = document.createTextNode(titreTableau);
	
	caption.appendChild(titreTab);
	tab.appendChild(caption);
	
	var tabHead = document.createElement("thead");
	var trh = document.createElement("tr");
	var thFlux = document.createElement("th");
	var titreFlux = document.createTextNode("Titre du flux");
	var thCheck = document.createElement("th");
	var titreCheck = document.createTextNode("Afficher");
	
	thCheck.appendChild(titreCheck);
	thFlux.appendChild(titreFlux);
	trh.appendChild(thFlux);
	trh.appendChild(thCheck);
	tabHead.appendChild(trh);
	tab.appendChild(tabHead);
	
	
    var tabBody = document.createElement("tbody");
	nbLignes = tableau.fluxrss.length;
	
	for(var j=0;j<nbLignes;j++)
	{
		// creates a table row
		
		// Cr�ation des flux
		var row = document.createElement("tr");
		
		var cell = document.createElement("td");
		
		var lien = document.createElement("a");
		var flux = tableau.fluxrss[j].link;
		
		lien.setAttribute("href",flux);
		var nomFlux = document.createTextNode(tableau.fluxrss[j].title);
		lien.appendChild(nomFlux);
        cell.appendChild(lien);
        row.appendChild(cell);
        
        // Cr�ation bouton afficher
		
		var cell = document.createElement("td");
		
		//Create an input type dynamically.
	    var bouton = document.createElement("input");
	 
	    //Assign different attributes to the element.
	    bouton.setAttribute("type", "button");
	    bouton.setAttribute("value", "Rendre visible");
	    bouton.setAttribute("id", "boutAff_"+tableau.fluxrss[j].title);
	    
	    // event afficher
	    TABFLUXDESCRIPTION[tableau.fluxrss[j].title]=tableau.fluxrss[j].description;
	    TABFLUXADRESSE[tableau.fluxrss[j].title]=tableau.fluxrss[j].link;
	    TABSITE[tableau.fluxrss[j].title]=titreTableau;
	    
	    
	    bouton.addEventListener('click',maj_flux_visibles);

        cell.appendChild(bouton);
        row.appendChild(cell);
        
        
		// add the row to the end of the table body
        tabBody.appendChild(row);
	}
	// put the <tbody> in the <table>
    tab.appendChild(tabBody);
    return tab;
} 

//Ajoute un champs de saisie de flux
function ajouterUnSiteFlux(){
	
	var requete = createXmlHttpRequestObject();
	var site = document.getElementById("nomSite").value;
	var adresse = document.getElementById("adresseSite").value;
	
	url = "gerer_fluxrss_traitement.php";
	requete.open("POST", url, true);
	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requete.onreadystatechange = function(){verifAjout(requete)};
	var data = "traitement=ajout&site="+site+"&adresse="+adresse;
	requete.send(data);
}

function verifAjout(requete)
{
	if (requete.readyState==4 && (requete.status == 200 || requete.status == 0)) {
		document.body.style.cursor='default';
		var reponse = requete.responseText;
		
		if (reponse =="ok")
		{
			chargerTableauSiteFlux();
			charger_liste_deroulante();
		}
		else
		{
			if (reponse == "nok:incorrect")
			{
				alert("Champs incorrects");
			}
			else
			{
				if (reponse == "nok:existe")
				{
					alert("Site de flux déjà présent");
				}
			}
		}
	}
	else
	{
		if (requete.readyState < 4) 
		{
			document.body.style.cursor='wait';
		}
	}
}

// Chargement du tableau de site de flux de la base
function chargerTableauSiteFlux()
{
	var requete = createXmlHttpRequestObject();
	var site = document.getElementById("nomSite");
	var adresse = document.getElementById("adresseSite");
	
	url = "gerer_fluxrss_traitement.php";
	requete.open("POST", url, true);
	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requete.onreadystatechange = function(){afficherTableauSiteFlux(requete)};
	var data = "traitement=charger";
	requete.send(data);
}

// affiche le tableau de flux
function afficherTableauSiteFlux(requete)
{
	if (requete.readyState==4 && (requete.status == 200 || requete.status == 0)) {
		document.body.style.cursor='default';
		var tab = JSON.parse(requete.responseText);
		
		var tabnode = construireTabSiteFlux(tab);
		var tableaff = document.getElementById("tableaff")

        // On supprimer le tbody si il y est
		for (var m=0; m<tableaff.childNodes.length; m++)
		{
			if (tableaff.childNodes.item(m).nodeName == "TBODY")
			{
				tableaff.removeChild(tableaff.childNodes.item(m));
			}
		}
		tableaff.appendChild(tabnode);
	}
	else
	{
		if (requete.readyState < 4) 
		{
			document.body.style.cursor='wait';
		}
	}
}

// fonction qui construit le tbody d'un tableau avec une chaine pass� en param
function construireTabSiteFlux(tableau)
{
	var tbody = document.createElement("tbody");
	tbody.setAttribute("id", "tablebody");
	
	nbLignes = tableau.siteflux.length;
	
	for(var j=0;j<nbLignes;j++)
	{
		var row = document.createElement("tr");
		
		// Nom du site
		var cell = document.createElement("td");
		var nomSite = document.createTextNode(tableau.siteflux[j].site);
        cell.appendChild(nomSite);
        row.appendChild(cell);
        
        // Adresse du site
        var cell = document.createElement("td");
		var lien = document.createElement("a");
		lien.setAttribute("href",tableau.siteflux[j].adresse);
		var nomAdresse = document.createTextNode(tableau.siteflux[j].adresse);
		lien.appendChild(nomAdresse);
        cell.appendChild(lien);
        row.appendChild(cell);
        
        // Bouton supprimer
		var cell = document.createElement("td");
	    var bouton = document.createElement("input");
	    bouton.setAttribute("type", "button");
	    bouton.setAttribute("value", "Supprimer");
	    bouton.setAttribute("id", "bout_"+tableau.siteflux[j].site);
	    
	    // ajout de l'evenement au bouton supprimer
	    bouton.addEventListener('click',supprimer_site);
	    
        cell.appendChild(bouton);
        row.appendChild(cell);
        
        tbody.appendChild(row);
	}
	
	 // Ajout de la ligne de saisie
	var row = document.createElement("tr");
	
	// input de saisie du nom du site
	var cell = document.createElement("td");
	var inputNomSite = document.createElement("input");
	inputNomSite.setAttribute("type", "text");
	inputNomSite.setAttribute("value", "Nom du site ...");
	inputNomSite.setAttribute("id", "nomSite");
    cell.appendChild(inputNomSite);
    row.appendChild(cell);
    
    // input de saisie de l'Adresse du site
    var cell = document.createElement("td");
	var inputAdresseSite = document.createElement("input");
	inputAdresseSite.setAttribute("type", "text");
	inputAdresseSite.setAttribute("value", "Adresse ...");
	inputAdresseSite.setAttribute("id", "adresseSite");
    cell.appendChild(inputAdresseSite);
    row.appendChild(cell);
	
    // Bouton supprimer
	var cell = document.createElement("td");
    row.appendChild(cell);
    
    tbody.appendChild(row);
    
    // Event sur les inputs cr�es
    inputNomSite.addEventListener('click',mettre_a_zero);
    inputAdresseSite.addEventListener('click',mettre_a_zero);
    
    return tbody;
}

// Suppression de sites
function supprimer_site(e)
{
	var bout_id = e.target.id;
	var tab = bout_id.split('_');
	var requete = createXmlHttpRequestObject();
	
	url = "gerer_fluxrss_traitement.php";
	requete.open("POST", url, true);
	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requete.onreadystatechange = function(){supprimer_site_reponse(requete)};
	var data = "traitement=supprimer&site="+tab[1];
	requete.send(data);
}

function supprimer_site_reponse(requete)
{
	if (requete.readyState==4 && (requete.status == 200 || requete.status == 0)) {
		document.body.style.cursor='default';
		var reponse = requete.responseText;
		if (reponse == "ok")
		{
			chargerTableauSiteFlux();
			charger_liste_deroulante();
		}
	}
	else
	{
		if (requete.readyState < 4) 
		{
			document.body.style.cursor='wait';
		}
	}
}

function charger_liste_deroulante()
{
	var requete = createXmlHttpRequestObject();
	
	url = "gerer_fluxrss_traitement.php";
	requete.open("POST", url, true);
	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requete.onreadystatechange = function(){charger_liste_deroulante_reponse(requete)};
	var data = "traitement=liste";
	requete.send(data);
}

function charger_liste_deroulante_reponse(requete)
{
	if (requete.readyState==4 && (requete.status == 200 || requete.status == 0)) {
		document.body.style.cursor='default';
		var liste = JSON.parse(requete.responseText);
		
		construire_liste_deroulante(liste);
	}
	else
	{
		if (requete.readyState < 4) 
		{
			document.body.style.cursor='wait';
		}
	}
}

function construire_liste_deroulante(liste)
{
	combobox = document.getElementById('liste_selection_site');
	
	// suppression des fils
	for (var i=0; i<combobox.childNodes.length; i++)
	{
		combobox.removeChild(combobox.childNodes.item(i));
	}
	
	
	combobox.options[0] = new Option("---","---");
	
	for (var j=0; j<liste.listesites.length; j++)
	{
		combobox.options[j+1] = new Option(liste.listesites[j].site,liste.listesites[j].site);
	}
	
}


// Tableau d'affichage des flux rss visibles sur le site

function maj_flux_visibles(e)
{
	var requete = createXmlHttpRequestObject();
	var titreFlux = e.target.id.split("_")[1];
	var adresse = TABFLUXADRESSE[titreFlux];
	var site = TABSITE[titreFlux];
	var description = TABFLUXDESCRIPTION[titreFlux];
	
	url = "gerer_fluxrss_traitement.php";
	requete.open("POST", url, true);
	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requete.onreadystatechange = function(){maj_flux_visibles_reponse(requete)};
	var data = "traitement=ajouter_flux_visibles&site="+site+"&titreFlux="+titreFlux+"&adresse="+adresse+"&description="+description;
	requete.send(data);
}

function maj_flux_visibles_reponse(requete)
{
	if (requete.readyState==4 && (requete.status == 200 || requete.status == 0)) {
		document.body.style.cursor='default';
		var reponse = requete.responseText;
		if (reponse=="ok")
		{
			chargerTabFluxVisibles();
		}
		else
		{
			alert("Ce flux est déjà visible par les adhérents");
		}
	}
	else
	{
		if (requete.readyState < 4) 
		{
			document.body.style.cursor='wait';
		}
	}
}


function chargerTabFluxVisibles()
{
	var requete = createXmlHttpRequestObject();
	
	url = "gerer_fluxrss_traitement.php";
	requete.open("POST", url, true);
	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requete.onreadystatechange = function(){chargerTabFluxVisibles_reponse(requete)};
	var data = "traitement=flux_visibles";
	requete.send(data);
}

// affichage du tableau de flux visibles
function chargerTabFluxVisibles_reponse(requete)
{
	if (requete.readyState==4 && (requete.status == 200 || requete.status == 0)) {
		document.body.style.cursor='default';
		
		var tab = JSON.parse(requete.responseText);
		
		var tabnode = construireTabFluxVisibles(tab);
		
		var nodeTab = document.getElementById("flux-RSS-visibles");
		
		// On supprimer le tableau si il y est
		for (var m=0; m<nodeTab.childNodes.length; m++)
		{
			nodeTab.removeChild(nodeTab.childNodes.item(m));
		}
		
		nodeTab.appendChild(tabnode);
		
	}
	else
	{
		if (requete.readyState < 4) 
		{
			document.body.style.cursor='wait';
		}
	}
}

// construction du tableau de flux visibles
function construireTabFluxVisibles(tableau)
{
	var tab = document.createElement("table");
	var caption = document.createElement("caption");
	var titreTab = document.createTextNode("Flux rss visibles par les adhérents");
	
	caption.appendChild(titreTab);
	tab.appendChild(caption);
	
	var tabHead = document.createElement("thead");
	var trh = document.createElement("tr");
	var thSite = document.createElement("th");
	var titreSite = document.createTextNode("Site");
	var thFlux = document.createElement("th");
	var titreFlux = document.createTextNode("Titre du flux");
	var thCheck = document.createElement("th");
	var titreCheck = document.createTextNode("Supprimer");
	
	thSite.appendChild(titreSite);
	thCheck.appendChild(titreCheck);
	thFlux.appendChild(titreFlux);
	trh.appendChild(thSite);
	trh.appendChild(thFlux);
	trh.appendChild(thCheck);
	tabHead.appendChild(trh);
	tab.appendChild(tabHead);
	
	
    var tabBody = document.createElement("tbody");
	nbLignes = tableau.fluxrssvisibles.length;
	
	for(var j=0;j<nbLignes;j++)
	{
		// creates a table row
		var row = document.createElement("tr");
		
		// nom du site
		var cell = document.createElement("td");
		
		var nomSite = document.createTextNode(tableau.fluxrssvisibles[j].site);

        cell.appendChild(nomSite);
        row.appendChild(cell);
		
		// Création des flux
		var cell = document.createElement("td");
		
		var lien = document.createElement("a" );
		var flux = tableau.fluxrssvisibles[j].adresse_flux;
		
		lien.setAttribute("href",flux);
		var nomFlux = document.createTextNode(tableau.fluxrssvisibles[j].titre_flux);
		lien.appendChild(nomFlux);

        cell.appendChild(lien);
        row.appendChild(cell);
        
        // Cr�ation bouton afficher
		
		var cell = document.createElement("td");
		
		//Create an input type dynamically.
	    var bouton = document.createElement("input");
	 
	    //Assign different attributes to the element.
	    bouton.setAttribute("type", "button");
	    bouton.setAttribute("value", "Supprimer");
	    bouton.setAttribute("id", "boutSuppr_"+tableau.fluxrssvisibles[j].titre_flux);
	    
	    
	    //Event
	    bouton.addEventListener('click',supprimer_flux_visible);

        cell.appendChild(bouton);
        row.appendChild(cell);
        
        
		// add the row to the end of the table body
        tabBody.appendChild(row);
	}
	// put the <tbody> in the <table>
    tab.appendChild(tabBody);
    return tab;
} 

function supprimer_flux_visible(e)
{
	var titreFlux = e.target.id.split("_")[1];
	var requete = createXmlHttpRequestObject();
	url = "gerer_fluxrss_traitement.php";
	requete.open("POST", url, true);
	requete.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	requete.onreadystatechange = function(){supprimer_flux_visible_reponse(requete)};
	var data = "traitement=supprimer_flux_visibles&titreFlux="+titreFlux;
	requete.send(data);
}

// affichage du tableau de flux visibles
function supprimer_flux_visible_reponse(requete)
{
	if (requete.readyState==4 && (requete.status == 200 || requete.status == 0)) {
		document.body.style.cursor='default';
		var reponse = requete.responseText;
		
		if (reponse=="ok")
		{
			chargerTabFluxVisibles();
		}
		else
		{
			alert("Erreur lors de la suppression");
		}
		
	}
	else
	{
		if (requete.readyState < 4) 
		{
			document.body.style.cursor='wait';
		}
	}
}

// Chargement de la page 
function charge(){
	chargerTableauSiteFlux();
	charger_liste_deroulante();
	chargerTabFluxVisibles();
	addListener(document.getElementById('bout_ajouter_flux'),'click',ajouterUnSiteFlux);
	addListener(document.getElementById('liste_selection_site'),'change',traiterliste);
}

addListener(window,'load',charge);
